package cn.edu.zust.se.springmvctest.model;

import lombok.Data;

/**
 * @author jmj
 * @since 2022-5-6 0006 19:04
 */
@Data
public class R<T> {
    /** 状态码 */
    private Integer code;
    /** 数据 */
    private T data;
    /** 消息 */
    private String msg;
    public R() { }
    public R(Integer code, T data, String msg) {
        this.code = code;
        this.data = data;
        this.msg = msg;
    }

    public static  R ok() {
        return new  R<>(ReturnCode.SUCCESS.getCode(), null, null);
    }

    public static  R ok(String msg) {
        return new  R<>(ReturnCode.SUCCESS.getCode(), null, msg);
    }

    public static <T>  R<T> ok(T data, String msg) {
        return new  R<>(ReturnCode.SUCCESS.getCode(), data, msg);
    }

    public static  R error(String msg) {
        return new  R<>(ReturnCode.ERROR.getCode(), null, msg);
    }

    public static  R fail(ReturnCode code, String msg) {
        return new  R<>(code.getCode(), null, msg);
    }

    public static <T>  R<T> fail(String msg) {
        return new  R<>(ReturnCode.FAIL.getCode(), null, msg);
    }
}
